Zurück in DatenbankentwicklungWeiter in DatenbankentwicklungBeziehungen zwischen Tabellen ?

Begriff

Eine Abfrage auf mehr als einer Tabelle, setzt voraus, dass Beziehungen zwischen Tabellen definiert worden sind. Relationale Datenbanksysteme verknüpfen Tabellen ausschliesslich mit Verbundattributen. Dies sind Tabellenspalten mit kompatiblen Wertebereichen (aber nicht unbedingt gleichem Namen). Das folgende Datenbankstrukturdiagramm stellt zwei Beziehungen zwischen den Tabellen VERANSTALTUNG und ORGANISATION und eine weitere zwischen ORGANISATION und RAUM dar. Die Verbundattribute heissen Name und Raumnummer:

 

Arten

Nach der Zahl der Tabellenzeilen, die in Beziehung stehen, unterscheidet man zwischen 1:1-, 1:m- und m:n-Beziehungen. Die folgende Abbildung zeigt eine 1:m-Beziehung zwischen den Tabellen VERANSTALTUNG und ORGANISATION. Zu jeder Zeile der Veranstaltungstabelle passen 0, 1 oder mehrere Zeilen der Organisationstabelle. Zur Organisation einer Lehrveranstaltung gelangen Sie, indem Sie von der Spalte Name von VERANSTALTUNG zur gleichnamigen Spalte von ORGANISATION gehen.

In VERANSTALTUNG identifiziert das Verbundattribut Name eine Zeile eindeutig; es heisst deshalb Identifikations- oder Primärschlüssel (ein Sekundärschlüssel identifiziert nicht, sondern beschleunigt lediglich die Suche und Sortierung von Datensätzen). In ORGANISATION heisst das Attribut Name Fremdschlüssel, weil es in der verbundenen Fremdtabelle VERANSTALTUNG Primärschlüssel ist. Die Tabelle mit dem Primärschlüssel heisst Haupttabelle, jene mit dem Fremdschlüssel Detailtabelle - "Detail"tabelle, weil sie jeden Satz der Haupttabelle durch 0, 1 oder mehrere Sätze der verbundenen Tabelle "detailliert" beschreibt.

Für die drei Beziehungstypen 1:m, 1:1 und m:n gilt:

  1. 1:m- (bzw. 1:n-) Beziehungen setzen voraus, dass zu jedem Fremdschlüsselwert der Detailtabelle ein passender Primärschlüsselwert der Haupttabelle existiert. Die meisten Datenbanksysteme prüfen automatisch, ob diese Bedingung (die Beziehungsintegrität) gilt.
  2. Eine 1:1-Beziehung ist selten. Sie entsteht durch die horizontale Teilung einer Tabelle und kann die Übersichtlichkeit der Datenbank oder die Zugriffsgeschwindigkeit verbessern. Ein weiterer Grund für eine 1:1-Beziehung können unterschiedliche Sicherheitsdefinitionen für die geteilten Tabellen sein.
  3. Eine m:n-Beziehung verbindet zwei Tabellen, in denen der Primärschlüsselwert jeder Zeile der einen Tabelle dem Fremdschlüsselwert mehrerer Zeilen der anderen Tabelle und umgekehrt entspricht. In relationalen Datenbanken kann eine m:n-Beziehung nur durch eine Dritttabelle, eine sogenannte Verbindungstabelle, abgebildet werden. Diese muss mindestens die Primärschlüssel der verbundenen Tabellen enthalten, damit man über sie indirekt die m:n-Verbindung herstellen kann.

Im oben eingeführten Datenbankstrukturdiagramm kann eine Veranstaltung wie Recht in verschiedenen Räumen, zum Beispiel 111 und 112, stattfinden. Jeder Raum kann seinerseits verschiedene Veranstaltungen beherbergen. Eine solche m:n-Beziehung liesse sich ohne die Verbindungstabelle ORGANISATION nur unter Verletzung der Grundsätze des Relationenmodells und der Normalisierungstheorie bilden:


Beziehungen unter SQL

In SQL können zwei Tabellen wie folgt verknüpft werden:

SELECT <Interessierende Spalten>
FROM <TABELLE_1, TABELLE_2>
WHERE <Verbundspalte_von_Tabelle_1> = <Verbundspalte_von_Tabelle_2>

Der Access-Dialekt von SQL modifiziert den Standard um die proprietären Schlüsselwörter INNER JOIN ... ON:

SELECT <Interessierende Spalten>
FROM <TABELLE_1> INNER JOIN <TABELLE_2>
ON <Verbundspalte_von_Tabelle_1> = <Verbundspalte_von_Tabelle_2>

INNER JOIN ... ON erlaubt die Erzeugung einer Ergebnistabelle, deren allfällige Änderungen auf die Ausgangstabellen Tabelle_1 und Tabelle_2 durchschlagen. Access bezeichnet eine solche Tabelle als Dynaset.